﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate.Cfg;
using NHibernate.Mapping;

namespace NHibernate.Audit.Cfg
{
    public abstract class AbstractAuditClassConvention : IAuditClassConvention 
    {

        public abstract bool AuditClass(string entityName);
        public abstract bool AuditClass(PersistentClass clazz);
        public abstract bool AuditProperty(Property Property);
        public abstract bool AuditProperty(string propertyName);
        public abstract string GetAuditClassNameFor(PersistentClass clazz);
        public abstract string GetAuditEntityNameFor(PersistentClass clazz);
        public abstract string GetAuditEntityNameFor(string entityName);

        public string  GetAuditEntityNameFor(Configuration configuration, System.Type realType)
        {
            return GetAuditEntityNameFor(configuration.GetClassMapping(realType));
        }


    }
}
